#include <iostream>

class AirTransport
{
public:
    virtual void airTransport() = 0;
};

class LandTransport
{
public:
    virtual void landTransport() = 0;
};

class SFExpress : public LandTransport, public AirTransport
{
public:
    void airTransport() override
    {
        std::cout << "顺丰在空运您的包裹" << std::endl;
    }
    void landTransport() override
    {
        std::cout << "顺丰子公司在陆运您的包裹" << std::endl;
    }
};

class YTExpress : public LandTransport
{
public:
    void landTransport() override
    {
        std::cout << "圆通快递在陆运您的包裹" << std::endl;
    }
};

class EMSExpress : public AirTransport
{
public:
    void airTransport() override
    {
        std::cout << "EMS 正在空运您的包裹，请耐心等待" << std::endl;
    }
};

void airTransport(AirTransport &expressCompany)
{
    expressCompany.airTransport();
}

void landTransport(LandTransport &expressCompany)
{
    expressCompany.landTransport();
}

int main(int argc, char const *argv[])
{
    
    SFExpress sf{};
    EMSExpress ems{};
    YTExpress yt{};

    airTransport(sf);

    return 0;
}
